#ifndef AI_SERVICE_PROXY_H
#define AI_SERVICE_PROXY_H

#include <vector>
#include <string>

#include "iremote_broker.h"
#include "iremote_proxy.h"
#include "refbase.h"
#include "i_ai_service.h"
#include "nocopyable.h"


namespace OHOS {
namespace AIS {
class AIServiceProxy : public IRemoteProxy<IAIService> {
public:

    int32_t Init(std::string& modelPath, int32_t* modelId) override;

    int32_t Process(const int32_t modelId, PicDesc& picDesc, std::string& picData, InferResult& result) override; 

    int32_t DeInit() override;

    explicit AIServiceProxy(const sptr<IRemoteObject>& impl)
        : IRemoteProxy<IAIService>(impl)
    {
    }
    ~AIServiceProxy() = default;

private:
    static inline BrokerDelegator<AIServiceProxy> delegator_;
    DISALLOW_COPY_AND_MOVE(AIServiceProxy);
};
}  // namespace AIS    
}  // namespace OHOS

#endif // AI_SERVICE_PROXY_H